package com.jvm.弱引用;

import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.concurrent.atomic.AtomicInteger;

/**
 * @description:
 * @author: ywk
 * @date: 2020-11-21
 */
public class StringUtils {
    //    String.intern()：
//    当调用 intern 方法时，如果常量池已经包含一个等于此 String 对象的字符串（用 equals(Object) 方法确定），则返回池中的字符串。否则，将此 String 对象添加到常量池中，并返回此 String 对象的引用。
//
//    实例：
    public static void main(String[] args) throws ClassNotFoundException {


        String s1 = "abc";
        String s3 = "a";
        String s4 = "bc";
        String s5 = "abc";
//        System.out.println(s1.equals(s3 + s4));
//        System.out.println(s1 == s3 + s4);
//        System.out.println(s1 ==s5);
        String s2 = s1.intern();
        System.out.println(s1.equals(s2));
        System.out.println(s1 == s2); //false

        System.out.println(s1 + " " + s2); // abc abc

        System.out.println(s2 == s1.intern()); //true

        System.out.println(s1 == s1.intern());//为false说明原来的“abc”仍然存在；
        StringBuilder sb = new StringBuilder();
        StringBuffer stringBuffer = new StringBuffer();
        AtomicInteger atomicInteger = new AtomicInteger(7);
        System.out.println(atomicInteger.incrementAndGet());
        System.out.println(atomicInteger.compareAndSet(8, 7));
        System.out.println(atomicInteger.get());
        HashMap map = new HashMap();
        LinkedHashMap map1 = new LinkedHashMap();
        map1.put(1, 1);
        Class<?> aClass = Class.forName("java.lang.String");

    }
}
